/*
 * Datos.cpp
 *
 *  Created on: May 20, 2012
 *      Author: lucasj
 */

#include "Datos.h"

Data::Datos::Datos(Validador& validator):index(validator) {

}

Data::Datos::~Datos() {

}

// Funcionamiento cargar:
// Carga los valores del archivo.

void Data::Datos::cargar(std::string& dir) {
	std::ifstream archivo(dir.c_str());
	this->direccion = dir;
	int cod = 1;
	std::string linea;
	std::getline(archivo, linea);
	while(!archivo.eof()) {
		this->index.SetElem(linea, cod);
		getline(archivo, linea);
		++cod;
	}
	this->codigoDato = cod;
	archivo.close();
}

void Data::Datos::Agregar(std::string& linea ) {
	this->index.SetElem(linea, this->codigoDato);
	++this->codigoDato;
	std::fstream archivo(this->direccion.c_str());
	archivo.seekg(0, std::ios::end);
	archivo << linea << std::endl;
	archivo.close();
}

void Data::Datos::Consultar(Consulta& pregunta , std::ostringstream &res) {
	this->index.Consultar(pregunta, res);
}

std::ostringstream& Data::operator<<(std::ostringstream& oss,
					  Data::Datos &dato) {
	oss << dato.index;
	return oss;
}

void Data::Datos::obtenerValorColumna(Consulta& pregunta, std::ostringstream &res) {
	this->index.obtenerValorColumna(pregunta, res);
}
